package program.set;

import program.tree.BST;

/**
 * 依据<二分搜索树{@link BST}>作为底层数据结构.
 *
 * 所有操作的时间复杂度都是O(h); h:为树的高度.
 * 平均时间复杂度：O(logn)
 * 最差: O(n); 因为若按顺序插入tree中, 那么tree将退化成为一个链表.
 */
public class BSTSet<E extends Comparable<E>> implements Set<E> {

    private BST<E> bst;

    public BSTSet() {
        bst = new BST<>();
    }

    @Override
    public void add(E data) {
        bst.add(data);
    }

    @Override
    public E remove(E data) {
        return bst.remove(data);
    }

    @Override
    public boolean contains(E data) {
        return bst.contains(data);
    }

    @Override
    public int getSize() {
        return bst.getSize();
    }

    @Override
    public boolean isEmpty() {
        return bst.isEmpty();
    }
}
